//通过vue-router插件实现模板路由配置
import { createRouter, createWebHashHistory } from 'vue-router'
import { constantRoute } from './routes'

//获取用户相关的小仓库内部token数据,去判断用户是否登录成功
import useUserStore from '../store/modules/user'
import pinia from '../store'
const userStore = useUserStore(pinia)
//创建路由器
const router = createRouter({
  //路由模式hash
  history: createWebHashHistory(),
  routes: constantRoute,
  //滚动行为
  scrollBehavior() {
    return {
      left: 0,
      top: 0,
    }
  },
})
//全局前置守卫
router.beforeEach(async (to: any, from: any, next: any) => {
  //to:你将要访问那个路由
  //from:你从来个路由而来
  //next:路由的放行函数
  
  //获取token,去判断用户登录、还是未登录
  const token = userStore.token
  //获取用户名字
  const username = userStore.username
  console.log(token);
  
  //用户登录判断
  if (token) {
    //登录成功,访问login,不能访问,指向首页
    if (to.path == '/login') {
      next({ path: '/' })
    } else {
      //登录成功访问其余六个路由(登录排除)
      //有用户信息
      next()
      // if (username) {
      //   //放行
      //   next()
      // } else {
      //   //如果没有用户信息,在守卫这里发请求获取到了用户信息再放行
      //   try {
      //     //获取用户信息
      //     await userStore.userInfo()
      //     //放行
      //     //万一:刷新的时候是异步路由,有可能获取到用户信息、异步路由还没有加载完毕,出现空白的效果
      //     next({ ...to })
      //   } catch (error) {
      //     //token过期:获取不到用户信息了
      //     //用户手动修改本地存储token
      //     //退出登录->用户相关的数据清空
      //     await userStore.userLogout()
      //     next({ path: '/login', query: { redirect: to.path } })
      //   }
      // }
    }
  } else {
    //用户未登录判断
    if (to.path == '/login') {
      next()
    } else {
      next({ path: '/login', query: { redirect: to.path } })
    }
  }
})

export default router
